package com.sally.demo.config;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

/**
 * @author Sally
 * @date 2021-3-25 18:40
 */
@Configuration
//@EnableAutoConfiguration
public class WebSocketConfig {

//    @Bean
    public ServerEndpointExporter serverEndpointExporter(){
        return new ServerEndpointExporter();
    }
    /**
     * 配置 WebSocket 进入点，及开启使用 SockJS，这些配置主要用配置连接端点，用于 WebSocket 连接
     *
     * @param registry STOMP 端点
     */
//    @Override
//    public void registerStompEndpoints(StompEndpointRegistry registry) {
//        registry.addEndpoint("/ws")
//                .setAllowedOrigins("*")
//                .withSockJS();
//    }

    /**
     * 配置消息代理选项
     *
     * @param registry 消息代理注册配置
     */
//    @Override
//    public void configureMessageBroker(MessageBrokerRegistry registry) {
//        // 设置一个或者多个代理前缀，在 Controller 类中的方法里面发生的消息，会首先转发到代理从而发送到对应广播或者队列中。
//        registry.enableSimpleBroker("/topic");
//        // 配置客户端发送请求消息的一个或多个前缀，该前缀会筛选消息目标转发到 Controller 类中注解对应的方法里
//        registry.setApplicationDestinationPrefixes("/im");
//    }

    /**
     * ⾦蝶⽂件⽆法上传时使⽤,<注意：⾮国产化注⼊,⽂件⽆法上传>
     *  @return MultipartResolver
     */
    @Bean(name = "multipartResolver")
    @Profile({"uos", "dm"})
    public MultipartResolver multipartResolver() {
        CommonsMultipartResolver resolver = new CommonsMultipartResolver();
        resolver.setDefaultEncoding("UTF-8");
        // resolveLazily属性启⽤是为了推迟⽂件解析，以在在UploadAction中 捕获⽂件⼤⼩异常
        resolver.setResolveLazily(true);
        resolver.setMaxInMemorySize(40960);
        // 上传⽂件⼤⼩ 100M 100*1024*1024
        resolver.setMaxUploadSize(100 * 1024 * 1024);
        return resolver;
    }
}
